import axios from "axios";


const http = axios.create({
  baseURL: '/', //请求携带的前缀
  timeout: 5000 //请求的超时时间
});


// 创建拦截器
// 添加请求拦截器
http.interceptors.request.use(function (config) { 
  // 从 localStorage 或 sessionStorage 获取 token
  const token = localStorage.getItem('token') || sessionStorage.getItem('token');
  
  // 如果 token 存在，添加到请求头
  if (token) {
    config.headers['Authorization'] = `Bearer ${token}`;
    // 或者使用其他格式，根据后端要求调整：
    // config.headers['token'] = token;
    // config.headers['X-Access-Token'] = token;
  }
  
  return config;
}, function (error) {
  return Promise.reject(error);
});

// 添加响应拦截器
http.interceptors.response.use(function (response) {
  return response;
}, function (error) {
  // 处理 token 过期或未授权的情况
  if (error.response) {
    const { status } = error.response;
    
    // 401 未授权 - token 过期或无效
    if (status === 401) {
      // 清除本地存储的认证信息
      localStorage.removeItem('token');
      localStorage.removeItem('username');
      localStorage.removeItem('displayName');
      sessionStorage.removeItem('token');
      sessionStorage.removeItem('username');
      sessionStorage.removeItem('displayName');
      
      // 触发登出事件
      window.dispatchEvent(new Event('userLogout'));
      
      // 跳转到登录页（可选）
      // window.location.href = '/login';
    }
    
    // 403 禁止访问
    if (status === 403) {
      console.error('没有权限访问该资源');
    }
  }
  
  return Promise.reject(error);
});

export default http;